<?php
  # Classes de Modelo e PHPMailer
    
    require_once( CLASS_REQUIRE_INDEX );
    require_once( MODEL_DIR . "LocutorModel.class.php" );
    require_once( CLASS_FUNCTIONS );    
    require_once( CLASS_MENSAGEM );
    require_once( CLASS_EMAIL );    
    require_once( "tools/class/SessionController.class.php" ); 
    

class LocutorController extends IndexController{
        
        
    public function __construct(){
        parent::__construct();            
         
        # instancia de models
        $this->msg = new Mensagem();
        $this->util = new FuncoesFacade();
        $this->model = new LocutorModel();
        $this->sesson = new SessionController();
        
        
        #configurações da classe
        $this->tabela = "locutor";
        $this->dir_upload_imagem = '../uploaded/locutor';
        $this->dir_upload_audio = '../uploaded/locutor/audio';
        $this->tinymce_base = parent::url_base() . "plugins/";
        parent::setAttribute("m_locutor",1);
        
        # checa se o usuário esta autenticado
        if(!$this->util->check_point_usuario()){
                parent::login_site();
                exit;
        }
        
    }
    
    public function defaultAction(){ 
    
        $this->Listar(); 
    }          
    
    public function return_audio_base($nome_audio){
        return parent::url_site()."/uploaded/locutor/audio/".$nome_audio;
    }
    
    
    public function Adicionar(){
            
            parent::setAttribute("tinymce",$this->util->tinymce(parent::url_base()."plugins/"));
            parent::setAttribute("frm_editar","inserir");
            parent::setAttribute("lateral","main_lateral.html");
            parent::setAttribute("view","frm/locutor_form.html");
            parent::execute("main_index.html");
    }
    public function Editar(){
            
            # Paginação
            $isPaginacao = parent::get_url_param(3);
            
            if($isPaginacao == "pagina"):
                $pagina_atual = (int)parent::get_url_param(4);
                parent::setAttribute("pagina",$pagina_atual);
            else:
                $pagina_atual = 0;
                parent::setAttribute("pagina",$pagina_atual);
            endif;
            
            #checa o id
            $locutor_id = (int)parent::get_url_param(2);
            
            if($locutor_id):
                  $array_locutor = $this->model->get_locutor_id($locutor_id);
                  $base_audio_player = $this->return_audio_base($array_locutor[0]['audio']);
                  parent::setAttribute("audio_player",$this->util->plugin_audio_player($base_audio_player,0,0,parent::url_base()));
                  parent::setAttribute("locutor_id",$array_locutor[0]);
                  parent::setAttribute("array",$this->model->get_locutor_id($locutor_id));
            endif;
        
            parent::setAttribute("tinymce",$this->util->tinymce($this->tinymce_base));
            parent::setAttribute("frm_editar","editar");
            parent::setAttribute("lateral","main_lateral.html");
            parent::setAttribute("view","frm/locutor_form.html");
            parent::execute("main_index.html");
    }
    public function Excluir(){

            #excluir vários registros
            if(is_array(parent::get_param('checkbox'))):
            
                #paginação via post    
                $isPaginacao = parent::get_param("pagina");
                if($isPaginacao):
                    $pagina_atual = (int)parent::get_param("pagina");
                    parent::setAttribute("pagina",$pagina_atual);
                else:
                    $pagina_atual = 0;
                    parent::setAttribute("pagina",$pagina_atual);
                endif;
            
                    #lista de id a serem excluidos
                    $i = 0;
                    foreach(parent::get_param('checkbox')  as  $value):
                        $locutor_id = (int)$value;
                        $i = $i+1;
                        $r = $this->model->delete_locutor($locutor_id);                    
                            if($r):
                                 $retorno[$i] = "true";
                            else:
                                 $retorno[$i] = "false";
                            endif;
                    endforeach;
                
                    $procura_erro = array_search('false', $retorno);
                    
                    if($procura_erro == "false"):
                       $mensagem = $this->msg->locutor('delete_locutor_fail');
                    else:
                       $mensagem = $this->msg->locutor('delete_locutor_ok');
                    endif;
                
            endif;
            
            
            #excluir id único
            
            # paginação id único via url
            $isPaginacao = parent::get_url_param(3);
            if($isPaginacao == "pagina"):
                $pagina_atual = (int)parent::get_url_param(4);
                parent::setAttribute("pagina",$pagina_atual);
            else:
                $pagina_atual = 0;
                parent::setAttribute("pagina",$pagina_atual);
            endif;
            
            $locutor_id = (int)parent::get_url_param(2);
            $r = $this->model->delete_locutor($locutor_id);

                if($r):
                    $mensagem = $this->msg->locutor('delete_locutor_ok');
                else:
                    $mensagem = $this->msg->locutor('delete_locutor_fail');
                endif;
                
            
            $array = $this->model->get_locutor($pagina_atual,20);
            
            parent::setAttribute("msg",$mensagem);            
            parent::setAttribute("locutor",$array["dados"]);
            parent::setAttribute("paginacao",$array["paginacao"]);
            parent::setAttribute("lateral","main_lateral.html");
            parent::setAttribute("view","frm/locutor_listar.html");
            parent::execute("main_index.html");
        
        
    }
    public function Listar(){

            # Paginação
            $isPaginacao = parent::get_url_param(2);
            if($isPaginacao == "pagina"):
                $pagina_atual = (int)parent::get_url_param(3);
                parent::setAttribute("pagina",$pagina_atual);
            else:
                $pagina_atual = 0;
                parent::setAttribute("pagina",$pagina_atual);
            endif;
        
            # Lista informações model
            $array = $this->model->get_locutor($pagina_atual,20);
             
            parent::setAttribute("msg",null);            
            parent::setAttribute("locutor",$array["dados"]);
            parent::setAttribute("paginacao",$array["paginacao"]);
            parent::setAttribute("lateral","main_lateral.html");
            parent::setAttribute("view","frm/locutor_listar.html");
            parent::execute("main_index.html");
    }
    public function Salvar(){
        
        $locutor_id = (int)parent::get_param("id");
        
        if($locutor_id):
        
                #obtem o nome da imagem cadastrada para evitar imagens sem relação no ftp
                $array_locutor = $this->model->get_locutor_id($locutor_id);
                
                #checa para ver se há uma imagem
                if($_FILES['imagem']['name']):
                      #upload imagem
                      $nome_imagem = $this->util->upload_imagem($_FILES , 'imagem' , $this->dir_upload_imagem , $array_locutor[0]['imagem'], 'img');
                      #cria o array para o banco de dados
                      $array_upload = array("imagem" => $nome_imagem);
                endif;
                
                if($_FILES['audio']['name']):
                      #upload imagem
                      $nome_audio = $this->util->upload_imagem($_FILES , 'audio' , $this->dir_upload_audio , $array_locutor[0]['audio'], 'audio');
                      #cria o array para o banco de dados
                      $array_audio = array("audio" => $nome_audio);
                      $array_upload = (isset($array_upload)) ? array_merge($array_upload,$array_audio) : $array_audio;
                endif;
                
                #se houver algum array contendo imagem ou áudio
                $dados_post = $_POST;
                
                if(isset($array_upload)):
                    #une os dois arrays
                    $dados = array_merge($dados_post,$array_upload);
                else:
                    $dados = $dados_post;
                endif;
                
                $sql = $this->util->create_sql_update_bd($this->tabela, $dados);
                
                #checa resposta do model                
                $r = $this->model->update_locutor($sql);
                if($r):
                     $mensagem = $this->msg->locutor('update_locutor_ok');
                else:
                     $mensagem = $this->msg->locutor('update_locutor_fail');
                endif;
            
            else:
                                                
                #checa para ver se há uma imagem
                if($_FILES['imagem']['name']):
                      #upload imagem
                      $nome_imagem = $this->util->upload_imagem($_FILES , 'imagem' , $this->dir_upload_imagem , 0, 'img');
                      #cria o array para o banco de dados
                      $array_upload = array("imagem" => $nome_imagem);
                endif;
                
                if($_FILES['audio']['name']):
                      #upload imagem
                      $nome_audio = $this->util->upload_imagem($_FILES , 'audio' , $this->dir_upload_audio , 0, 'audio');
                      #cria o array para o banco de dados
                      $array_audio = array("audio" => $nome_audio);
                      $array_upload = (isset($array_upload)) ? array_merge($array_upload,$array_audio) : $array_audio;
                endif;
                
                #se houver algum array contendo imagem ou áudio
                $dados_post = $_POST;
                
                    if(isset($array_upload)):
                        #une os dois arrays
                        $dados = array_merge($dados_post,$array_upload);
                    else:
                        $dados = $dados_post;
                    endif;
                
                    $sql = $this->util->create_sql_insert_bd($this->tabela, $dados);
                
                    $r = $this->model->insert_locutor($sql);
                
                    if($r):
                         $mensagem = $this->msg->locutor('insert_locutor_ok');
                    else:
                         $mensagem = $this->msg->locutor('insert_locutor_fail');
                    endif;
                
        endif;
        
            # Paginação
            $isPaginacao = parent::get_param("pagina");
            
            if($isPaginacao):
                $pagina_atual = (int)$isPaginacao;
                parent::setAttribute("pagina",$pagina_atual);
            else:
                $pagina_atual = 0;
                parent::setAttribute("pagina",$pagina_atual);
            endif;
        
            # Lista informações model
            $array = $this->model->get_locutor($pagina_atual,20);
            
            parent::setAttribute("msg",$mensagem); 
            parent::setAttribute("locutor",$array["dados"]);
            parent::setAttribute("paginacao",$array["paginacao"]);
            parent::setAttribute("lateral","main_lateral.html");
            parent::setAttribute("view","frm/locutor_listar.html");
            parent::execute("main_index.html");
      
                
    }
        
        
    
        
    
    }            
            
            
            
?>
